﻿
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Drawing;
using System.Data;
using System.Data.SqlClient;
using Apa.Data;
using Apa.Control;

namespace Apa.Forms
{
    public partial class frmDefault : System.Web.UI.Page
    {
        private SqlConnection con = new SqlConnection("Data Source=eracrox.db.10064224.hostedresource.com;Initial Catalog=eracrox;Persist Security Info=True;User ID=eracrox;Password=aNDER28@");
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {

                sesionCronograma();
                loadStores();
            }
        }


        public void sesionCronograma()
        {
            Controladora control = new Controladora();

            List<tblLicencia> licencia = Session["Licencia"] as List<tblLicencia>;
            int idPrograma = licencia.First().idPrograma;
            Session.Add("idPrograma", idPrograma.ToString());


            string modulo = Request.QueryString["modulo"];
            string tipo = Request.QueryString["tipo"];

            List<tblResolucion> resoluciones = null;
            tblResolucion resolucion = null;

            int idEnlace = 0;

            if (modulo == "1")
            {
                resoluciones = control.consultarResolucion(idPrograma).Where(x => x.estadoRC == 1 && x.vigenciaRC > 0).ToList();
            }

            if (modulo == "2")
            {
                resoluciones = control.consultarResolucion(idPrograma).Where(x => x.estadoAC == 1 && x.vigenciaAC > 0).ToList();

            }

            try
            {
                //Aqui se calcula la resolución.
                resolucion = resoluciones.Where(x => x.fechaCreacion == resoluciones.Max().fechaCreacion).First();

                 idEnlace = resolucion.consecutivo;

                if (tipo == "A")
                {
                    try
                    {

                        //Aqui se calcula la autoevaluación.
                        tblAutoEvaluacion autoEvaluacion = control.consultarAutoevaluacionXResolucion(resolucion.consecutivo);
                        idEnlace = autoEvaluacion.idResolucion;

                    }
                    catch (Exception ex)
                    {
                        Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "alert('No existe una autoevaluación vigente!');", true);
                        
                    }
                }

            }
            catch (Exception ex)
            {

                if (tipo == "R")
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "alert('No existe una resolución vigente!');", true);
                }
                // return;
            }


            if(idEnlace>0){

                tblCronograma cronograma= control.consultarCronograma(idEnlace, tipo);
                tblDetalleCronograma detCronograma = new tblDetalleCronograma();

                //if (cronograma != null)
                //    detCronograma=control.consultarDetalleCronograma(cronograma.consecutivo);
                
                Session.Add("cronograma",cronograma);
                Session.Add("detCronograma", detCronograma);
                Session.Add("idEnlace", idEnlace.ToString());
                Session.Add("tipo", tipo);
            }

        }


        public tblCronograma insertarCronograma()
        {
            Controladora control = new Controladora();
             string enlace=Session["idEnlace"] as string;
            string tipo=Session["tipo"] as string;

            tblCronograma crono=control.consultarCronograma(int.Parse(enlace), tipo);

            if (crono == null)
            {
              return  control.insertarCronograma(int.Parse(enlace), tipo);
            }
            else
            {

                return crono;
            }



        }



        protected void loadStores()
        {
            con.Open();
            SqlCommand cmd = new SqlCommand("Select * from apa.tblDetalleCronograma", con);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataSet ds = new DataSet();
            da.Fill(ds);
            int count = ds.Tables[0].Rows.Count;
            con.Close();
            if (ds.Tables[0].Rows.Count > 0)
            {
                gridView.DataSource = ds;
                gridView.DataBind();
                gridView.Columns[0].Visible = false;
            }
            else
            {
                ds.Tables[0].Rows.Add(ds.Tables[0].NewRow());
                gridView.DataSource = ds;
                gridView.DataBind();
                int columncount = gridView.Rows[0].Cells.Count;
                lblmsg.Text = " No data found !!!";
            }
        }
        protected void gridView_RowEditing(object sender, GridViewEditEventArgs e)
        {
            gridView.EditIndex = e.NewEditIndex;
            loadStores();
        }
        protected void gridView_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {
            string idDetalle = gridView.DataKeys[e.RowIndex].Values["idDetalle"].ToString();
            TextBox Actividad = (TextBox)gridView.Rows[e.RowIndex].FindControl("txtActividad");
            TextBox FechaIncioProgramada = (TextBox)gridView.Rows[e.RowIndex].FindControl("txtFechaIncioProgramada");
            TextBox FechaFinProgramada = (TextBox)gridView.Rows[e.RowIndex].FindControl("txtFechaFinProgramada");
            TextBox FechaInicioReal = (TextBox)gridView.Rows[e.RowIndex].FindControl("txtFechaInicioReal");
            TextBox FechaFinReal = (TextBox)gridView.Rows[e.RowIndex].FindControl("txtFechaFinReal");
            TextBox Peso = (TextBox)gridView.Rows[e.RowIndex].FindControl("txtPeso");
            TextBox Indicador = (TextBox)gridView.Rows[e.RowIndex].FindControl("txtIndicador");
            TextBox Responsable = (TextBox)gridView.Rows[e.RowIndex].FindControl("txtResponsable");
            TextBox Cargo = (TextBox)gridView.Rows[e.RowIndex].FindControl("txtCargo");
            TextBox Meta = (TextBox)gridView.Rows[e.RowIndex].FindControl("txtMeta");
            TextBox Descripcion = (TextBox)gridView.Rows[e.RowIndex].FindControl("txtDescripcion");
            TextBox Recursos = (TextBox)gridView.Rows[e.RowIndex].FindControl("txtRecursos");
            TextBox Otro = (TextBox)gridView.Rows[e.RowIndex].FindControl("txtOtro");

            //con.Open();
            //SqlCommand cmd = new SqlCommand("update apa.tblDetalleCronograma set actividad='" + Actividad.Text + "', fechaInicioPlan='" + FechaIncioProgramada.Text + "', fechaFinPlan='" + FechaFinProgramada.Text + "', fechaInicioReal='" + FechaInicioReal.Text + "', fechaFinReal='" + FechaFinReal.Text + "', peso = '" + Peso.Text + "', indicador = '" + Indicador.Text + "', responsable = '" + Responsable.Text + "', cargo = '" + Cargo.Text + "', meta = '" + Meta.Text + "', descripcion = '" + Descripcion.Text + "', recursos = '" + Recursos.Text + "', otro = '" + Otro.Text + "', usuario = 'apa', fecha = GETDATE()  where idDetalle=" + idDetalle, con);
            //cmd.ExecuteNonQuery();
            //con.Close();

            Controladora control = new Controladora();

            tblDetalleCronograma detCronograma = control.actualizarDetalleCronograma(
                   int.Parse(idDetalle),
                   Actividad.Text,
                   DateTime.Parse(FechaIncioProgramada.Text),
                   DateTime.Parse(FechaFinProgramada.Text),
                   DateTime.Parse(FechaInicioReal.Text),
                   DateTime.Parse(FechaFinReal.Text),
                   Peso.Text,
                   Indicador.Text,
                   Responsable.Text,
                   Cargo.Text,
                   Meta.Text,
                   Descripcion.Text,
                   Recursos.Text,
                   Otro.Text,
                   "apa");

            lblmsg.BackColor = Color.Blue;
            lblmsg.ForeColor = Color.White;
            lblmsg.Text = idDetalle + "        Updated successfully........    ";
            gridView.EditIndex = -1;
            loadStores();
        }
        protected void gridView_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
        {
            gridView.EditIndex = -1;
            loadStores();
        }
        protected void gridView_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            string idDetalle = gridView.DataKeys[e.RowIndex].Values["idDetalle"].ToString();
            con.Open();
            SqlCommand cmd = new SqlCommand("delete from apa.tblDetalleCronograma where idDetalle=" + idDetalle, con);
            int result = cmd.ExecuteNonQuery();
            con.Close();
            if (result == 1)
            {
                loadStores();
                lblmsg.BackColor = Color.Red;
                lblmsg.ForeColor = Color.White;
                lblmsg.Text = idDetalle + "      Deleted successfully.......    ";
            }
        }
        protected void gridView_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                string idDetalle = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "idDetalle"));
                Button lnkbtnresult = (Button)e.Row.FindControl("ButtonDelete");
                if (lnkbtnresult != null)
                {
                    lnkbtnresult.Attributes.Add("onclick", "javascript:return deleteConfirm('" + idDetalle + "')");
                }
            }
        }
        protected void gridView_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName.Equals("AddNew"))
            {
                Controladora control= new Controladora();

                TextBox inidDetalle = new TextBox(); //(TextBox)gridView.FooterRow.FindControl("inidDetalle");
                TextBox inActividad = (TextBox)gridView.FooterRow.FindControl("inActividad");
                TextBox inFechaIncioProgramada = (TextBox)gridView.FooterRow.FindControl("inFechaIncioProgramada");
                TextBox inFechaFinProgramada = (TextBox)gridView.FooterRow.FindControl("inFechaFinProgramada");
                TextBox inFechaInicioReal = (TextBox)gridView.FooterRow.FindControl("inFechaInicioReal");
                TextBox inFechaFinReal = (TextBox)gridView.FooterRow.FindControl("inFechaFinReal");
                TextBox inPeso = (TextBox)gridView.FooterRow.FindControl("inPeso");
                TextBox inIndicador = (TextBox)gridView.FooterRow.FindControl("inIndicador");
                TextBox inResponsable = (TextBox)gridView.FooterRow.FindControl("inResponsable");
                TextBox inCargo = (TextBox)gridView.FooterRow.FindControl("inCargo");
                TextBox inMeta = (TextBox)gridView.FooterRow.FindControl("inMeta");
                TextBox inDescripcion = (TextBox)gridView.FooterRow.FindControl("inDescripcion");
                TextBox inRecursos = (TextBox)gridView.FooterRow.FindControl("inRecursos");
                TextBox inOtro = (TextBox)gridView.FooterRow.FindControl("inOtro");

                //con.Open();
                //SqlCommand cmd =
                //    new SqlCommand(
                //        "insert into apa.tblDetalleCronograma(idCronograma,actividad,fechaInicioPlan,fechaFinPlan,fechaInicioReal,fechaFinReal,peso,indicador,responsable,cargo,meta,descripcion,recursos,otro,usuario,fecha) values('1','" +
                //        inActividad.Text + "','" + inFechaIncioProgramada.Text + "','" + inFechaFinProgramada.Text + "','" + inFechaInicioReal.Text + "','" + inFechaFinReal.Text + "','" + inPeso.Text
                //        + "','" + inIndicador.Text
                //        + "','" + inResponsable.Text + "','" + inCargo.Text + "','" + inMeta.Text
                //        + "','" + inDescripcion.Text + "','" + inRecursos.Text + "','" + inOtro.Text + "','apa', '" + DateTime.Now.ToString("yyyy-dd-MM") + "')", con);
                //int result = cmd.ExecuteNonQuery();
                //con.Close();
                  string enlace=Session["idEnlace"] as string;
                  if (enlace != null)
                  {

                      tblCronograma cronograma = insertarCronograma();

                      tblDetalleCronograma detCronograma = control.insertarDetalleCronograma(cronograma.consecutivo,
                          0,
                          inActividad.Text,
                          DateTime.Parse(inFechaIncioProgramada.Text),
                          DateTime.Parse(inFechaFinProgramada.Text),
                          DateTime.Parse(inFechaInicioReal.Text),
                          DateTime.Parse(inFechaFinReal.Text),
                          inPeso.Text,
                          inIndicador.Text,
                          inResponsable.Text,
                          inCargo.Text,
                          inMeta.Text,
                          inDescripcion.Text,
                          inRecursos.Text,
                          inOtro.Text,
                          "apa");

                      if (detCronograma != null)
                      {
                          loadStores();
                          lblmsg.BackColor = Color.Green;
                          lblmsg.ForeColor = Color.White;
                          lblmsg.Text = inidDetalle.Text + "      Added successfully......    ";
                      }
                      else
                      {
                          lblmsg.BackColor = Color.Red;
                          lblmsg.ForeColor = Color.White;
                          lblmsg.Text = inidDetalle.Text + " Error while adding row.....";
                      }

                  }
                  else
                  {

                      Page.ClientScript.RegisterStartupScript(this.GetType(), "script", "alert('No existe una resolución o autoevaluación vigente!');", true);
    
                  }
            }
        }
    }
}